Skip to content

Feat/programs#37687

Closed
ManojPokuru wants to merge 37 commits intoopenedx:masterfrom
UNIFY-DIGITAL:feat/programs
Closed

Feat/programs#37687
ManojPokuru wants to merge 37 commits intoopenedx:masterfrom
UNIFY-DIGITAL:feat/programs

Conversation

@ManojPokuru
Copy link

Description

Describe what this pull request changes, and why. Include implications for people using this change.
Design decisions and their rationales should be documented in the repo (docstring / ADR), per
OEP-19, and can be
linked here.

Useful information to include:

  • Which edX user roles will this change impact? Common user roles are "Learner", "Course Author",
    "Developer", and "Operator".
  • Include screenshots for changes to the UI (ideally, both "before" and "after" screenshots, if applicable).
  • Provide links to the description of corresponding configuration changes. Remember to correctly annotate these
    changes.

Supporting information

Link to other information about the change, such as Jira issues, GitHub issues, or Discourse discussions.
Be sure to check they are publicly readable, or if not, repeat the information here.

Testing instructions

Please provide detailed step-by-step instructions for testing this change.

Deadline

"None" if there's no rush, or provide a specific date or event (and reason) if there is one.

Other information

Include anything else that will help reviewers and consumers understand the change.

  • Does this change depend on other changes elsewhere?
  • Any special concerns or limitations? For example: deprecations, migrations, security, or accessibility.
  • If your database migration can't be rolled back easily.

Cup0fCoffee and others added 30 commits April 30, 2025 17:24
Old certificates icon contained edX trademark logo, which was not
suitable for the open source repos. Replaced with the icon that contains
Open edX logo.
…penedx#36599) (openedx#36645)

* refactor: update sync model helper function docs

Adds some comments to explain certain confusing sections

* refactor: sync library content method

* feat: use edited_on block field

* test: modified field in course block index

* fix: extract uncommon methods to child class from base

(cherry picked from commit c2d9e40)
…-0083] (openedx#36528)

* feat: store content.child_usage_keys in Container search document
  Stores the draft children + published children (if applicable)

Related fixes:
* fix: lib_api.get_container does not take a "user" arg
* refactor: fetch_customizable_fields_from_container does not need a "user" arg
* refactor: moves tags_count into LibraryItem
   because anything that appears in a library may be tagged.
* refactor: remove get_container_from_key from public API
   API users must use get_container and ContainerMetadata.
* refactor: made set_library_item_collections take an entity_key string instead of
  a PublishableEntity instance, so we don't need to fetch a Container object to call it.
* refactor: changed ContainerLink.update_or_create to take the container PK
  instead of a Container object, since this is enough.
  Added container_pk to ContainerMetadata to support this.

(cherry picked from commit 5b3caa9)
) (openedx#36687)

* fix: "[created] received a naive datetime"
* fix: leaky "isolation" of events was causing test failures
* fix: make lib events more specific, emit them async, handle hierarchy correctly
* chore: bump openedx-events to 10.2.0 for new library PUBLISHED events

(cherry picked from commit 2e91a05)

Co-authored-by: Braden MacDonald <braden@opencraft.com>
…penedx#36656) (openedx#36701)

Returns the last_published_at date from the upstream summary endpoint.
…enedx#36703)

* Fix published param to support strings
* Add published_display_name to children response
openedx#36615)

Python's tempfile naming also includes underscore:
https://github.com/python/cpython/blob/3.12/Lib/tempfile.py#L140

This omission would cause normalization to fail about 1/6 of the time.

Also expand test to exercise more of character range.

(cherry picked from commit ca335b3)
`unsafely` should be a boolean, not None. I believe this is what was
causing a 400 in remote codejail-service calls (during darklaunch) when
the `calculate_problem_responses_csv.v2` instructor task ran:
edx/edx-arch-experiments#1028

There are also places in the code where this member appears to be a scalar
property instead of a method, or possibly that's just buggy code that
doesn't run. I decided not to touch that in this PR (we're probably going
to DEPR the entire unsafe mechanism anyhow) but if this PR doesn't work,
that's the next place to look -- because higher up in this file there's
a `can_execute_unsafe_code=None` that we could try changing.

(cherry picked from commit c9ae3ad)
This is intended to make logs more or less a standalone source for
analyzing mismatches.

- Only log mismatches or exceptions
- Merge local and remote log messages into one so they can be correlated
  more easily
- Different log messages for mismatch vs. unexpected exceptions
- Include course ID (as limit overrides context) in log message

(cherry picked from commit 5bc0581)
…nedx#36682)

For darklaunch comparisons where the two sides have different Python
versions, we'll want a more comprehensive list of normalizers.

- Expand the default list to include patterns discovered during a Python
  3.8 vs. 3.12 comparison.
- Append the setting value by default, rather than replacing (but still
  allow replacing).
- Use default normalizers if custom ones can't be loaded.
- Add log message when loading normalizers fails.
- Validate the replacement pattern, not just the search pattern.

(cherry picked from commit d5a273c)
…openedx#36685)

Some of the calls to `safe_exec` were missing the `limit_overrides_context`
parameter. This normally conveys the course key to codejail so that we can
give some courses different resource limits, but it's also valuable for
diagnosing codejail issues in logs and other telemetry.

I wasn't able to test all of these paths manually, but the utility function
`get_course_id_from_capa_block` will swallow errors, so the situation
should be no worse if the `LoncapaResponse.capa_block` field has something
unexpected.

(cherry picked from commit 4c46291)
Backport codejail darklaunch fixes to Teak.
Fix "Add" button in LTI editor in v2 library. The iframe studio view renderer in library now supports legacy studio view.

(cherry picked from commit 1002f5f)
Allow overriding but prevent download by default.

Also, extract `PYTHON_LIB_FILENAME` Django setting as a shared function
and document the setting.
…penedx#36766)

When duplicating an xblock in the authoring MFE, the iframe was opening its own editor modal instead of the MFE modal.
… (openedx#36772)

* fix: TinyMCE editors in advanced block editors
* Sets baseUrl to avoid an error in: https://github.com/openedx/XBlock/blob/86eee4b05dffa42b009fab2a9050b73766131b9d/xblock/utils/public/studio_edit.js#L52
* Uncouple the listener func of the cancel button (see the comment)
* chore: Add `edx_sga` in `LIBRARY_ENABLED_BLOCKS`
…dx#36723) (openedx#36773)

Fixes an error that is triggered when trying to copy/pasting Drag-and-drop block into Courses.

When a block is pasted into a Course or Library, we perform a search/replace on block's data to replace any old static URLs with their new path. Ordinary blocks like HTML and Video have a simple string of data where static URLs may live, but DnDv2 blocks have a dict of data which can contain other dicts and lists of strings that need to be modified. Other XBlocks may have similarly complex structures, and so this fix will resolve them as well.

This fixes the issue by recursing into the data structure to locate all the strings where replacements may need to be made.

This fix helps Course Authors use content staging in their Courses.

(cherry picked from commit 21399b4)
…fault (openedx#36876)

This adds a migration to turn on the new React-based Markdown editing option
for newly-created ProblemBlocks for all authors. The option is nested
under "Advanced settings", just like the Advanced (OLX) problem editor.

The migration is written such that it will *not* overwrite an existing global
"No" waffle flag. Furthermore, our waffle utilities are designed such that
org-level and course-level overrides will still take preference over the flag
that the migration creates. Therefore, this should only take effect in cases
where no existing waffle flag applies.

BREAKING CHANGE: Operators who do not want the new React-based Markdown editor
to be shown should create a flag contentstore.use_react_markdown_editor with
the value "No".

Prior art for flipping waffles like this: 9b00243
Backport of: eb94113
Closes: openedx/platform-roadmap#384

Co-authored-by: Muhammad Anas <muhammad.anas@arbisoft.com>
While trying to be enrolled on a verified course, the upgrade process
gets to an error screen due to a double slash on the URL that it's added
while doing the redirection to the account microfrontend

Backport of: 89e3d18
Closes: openedx/wg-build-test-release#468
…edx#36878)

edx-platform's Dockerfile was removed in Jan 2025 because the
community was not maintaining or using it. The PR that removed it [1]
also removed the .dockerfile as an effort to clean up unnecessary
Docker-related files from the repo.

However, the .dockerignore file serves an important purpose for
*any* Docker image based on edx-platform: it identifies which files
and paths aren't relevant for the functioning of the image. For
example, Tutor greatly benefited from this file, because by ignoring
unnecessary files, the build context was shrunk and image cache
layers were less likely to be unnecesarily invalidated.

We restore the .dockerfile as it was previously in Sumac [2], with
the addition of /venv, /.venv, and __pycache__, and with the
removal of /Dockerfile (as it no longer exists).

[1] openedx#35731
[2] https://github.com/openedx/edx-platform/blob/open-release/sumac.master/.dockerignore
Backports: 0b48f27
…igation (openedx#36891)

The original issue was that when a sequence was locked due to prerequisites, the API returned an empty items array ([]). This prevented the frontend from knowing what units were inside the locked sequence, meaning it couldn't construct the URLs correctly for navigation so the next/previous buttons stop working.
…6776)

Previously, courses with the "Course Visibility in Catalog" setting set to "about"
still appeared in the course catalog, which contradicts the expected behavior.
arslanashraf7 and others added 6 commits June 17, 2025 09:52
…penedx#36924)

The api/courseware/course fails for all the verified enrollments if you
are not using Account MFE, which means that you probably won't set
ACCOUNT_MICROFRONTEND_URL in your settings/configurations.
So this PR adds a check safely try to do rstrip.

Fixes a bug in openedx#36870
Backport of: d6dbc40
* Backport of fix: Edit components in unit that comes from libraries openedx#36914
* Backport of build: remove outdated dependency path openedx#36861, to fix the broken CI
…dx#36894)

* fix: redirect to account MFE when using any legacy account URL

Redirect to the account MFE URL configured each time a legacy
account URL like http(s)://lms/account/ or http(s)://lms/account/settings
is used to avoid 404 errors while linking SSO accounts or simply
trying to access the account view via URLs.
Signed-off-by: Farhaan Bukhsh <farhaan@opencraft.com>
@openedx-webhooks openedx-webhooks added the open-source-contribution PR author is not from Axim or 2U label Nov 26, 2025
@openedx-webhooks
Copy link

Thanks for the pull request, @ManojPokuru!

This repository is currently maintained by @openedx/wg-maintenance-edx-platform.

Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review.

🔘 Get product approval

If you haven't already, check this list to see if your contribution needs to go through the product review process.

  • If it does, you'll need to submit a product proposal for your contribution, and have it reviewed by the Product Working Group.
    • This process (including the steps you'll need to take) is documented here.
  • If it doesn't, simply proceed with the next step.
🔘 Provide context

To help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:

  • Dependencies

    This PR must be merged before / after / at the same time as ...

  • Blockers

    This PR is waiting for OEP-1234 to be accepted.

  • Timeline information

    This PR must be merged by XX date because ...

  • Partner information

    This is for a course on edx.org.

  • Supporting documentation
  • Relevant Open edX discussion forum threads
🔘 Submit a signed contributor agreement (CLA)

⚠️ We ask all contributors to the Open edX project to submit a signed contributor agreement or indicate their institutional affiliation.
Please see the CONTRIBUTING file for more information.

If you've signed an agreement in the past, you may need to re-sign.
See The New Home of the Open edX Codebase for details.

Once you've signed the CLA, please allow 1 business day for it to be processed.
After this time, you can re-run the CLA check by adding a comment below that you have signed it.
If the CLA check continues to fail, you can tag the @openedx/cla-problems team in a comment for further assistance.

🔘 Get a green build

If one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green.

Details
Where can I find more information?

If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources:

When can I expect my changes to be merged?

Our goal is to get community contributions seen and reviewed as efficiently as possible.

However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:

  • The size and impact of the changes that it introduces
  • The need for product review
  • Maintenance status of the parent repository

💡 As a result it may take up to several weeks or months to complete a review and merge your PR.

@mphilbrick211
Copy link

Hi @ManojPokuru - thanks for this contribution! We will need your CLA check to turn green to push this through. If you are contributing as an individual, you will need to submit a CLA form.

If you are contributing on behalf of an organization, please have your manager reach out to oscm@axim.org to have you added to our existing entity agreement. Thank you!

@mphilbrick211 mphilbrick211 moved this from Needs Triage to Needs Tests Run or CLA Signed in Contributions Dec 3, 2025
@mphilbrick211
Copy link

Hi @ManojPokuru - thanks for this contribution! We will need your CLA check to turn green to push this through. If you are contributing as an individual, you will need to submit a CLA form.

If you are contributing on behalf of an organization, please have your manager reach out to oscm@axim.org to have you added to our existing entity agreement. Thank you!

Hi @ManojPokuru! Just checking back in on this. Please let me know if you have any questions.

@mphilbrick211
Copy link

Hi @Manoj12309! Since this has been inactive for a bit, I'm going to close for now. Please let us know if you wish to pursue this in the future. Thanks!

@github-project-automation github-project-automation bot moved this from Needs Tests Run or CLA Signed to Done in Contributions Mar 11, 2026
@mphilbrick211 mphilbrick211 added the closed inactivity PR was closed because the author abandoned it label Mar 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

closed inactivity PR was closed because the author abandoned it open-source-contribution PR author is not from Axim or 2U

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.